package com.ruoyi.system.domain;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * 客户需求模板项对象 t_requirement_template_item
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName(value = "t_requirement_template_item", autoResultMap = true)
public class RequirementTemplateItem {

    @TableId(value = "id", type = IdType.AUTO)
    /** 主键ID */
    private Long id;

    @TableField("parent_id")
    /** 父级ID，根节点为 null */
    private Long parentId;

    @TableField("level")
    /** 层级，从 1 开始 */
    private Integer level;

    @TableField("code")
    /** 模板项代码（唯一且稳定，不随名称变更） */
    private String code;

    @TableField("label")
    /** 中文描述（显示名称） */
    private String label;

    @TableField("option_type")
    /** 选项类型：text/textarea/number/radio/checkbox/select/date/datetime/category */
    private String optionType;

    @TableField("required")
    /** 是否必填：0-否，1-是 */
    private Integer required;

    @TableField("placeholder")
    /** 占位提示 */
    private String placeholder;

    @TableField("default_value")
    /** 默认值（字符串存储） */
    private String defaultValue;

    @TableField(value = "options_json", typeHandler = com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler.class)
    /** 可选项配置（JSON 数组/对象），用于 radio/checkbox/select */
    private Object optionsJson;

    @TableField("status")
    /** 发布状态：0-未发布/禁用，1-已发布/启用 */
    private Integer status;

    @TableField("sort_order")
    /** 排序值，越小越靠前 */
    private Integer sortOrder;

    @TableField("remark")
    /** 备注 */
    private String remark;

    @TableField(value = "create_time", fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    /** 创建时间 */
    private LocalDateTime createTime;

    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    /** 更新时间 */
    private LocalDateTime updateTime;

    @TableField(value = "create_by", fill = FieldFill.INSERT)
    /** 创建人ID */
    private Long createBy;

    @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
    /** 更新人ID */
    private Long updateBy;

    @TableLogic
    @TableField("deleted")
    /** 逻辑删除：0-未删除，1-已删除 */
    private Integer deleted;
}


